/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package uy.edu.ort.CentroEstudios.ejb;

import java.util.ArrayList;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.xml.ws.WebServiceRef;
import uy.edu.ort.CentroEstudios.entidades.Alumno;
import uy.edu.ort.CentroEstudios.entidades.Docente;
import uy.edu.ort.CentroEstudios.entidades.Grupo;
import uy.edu.ort.CentroEstudios.entidades.Materia;
import uy.edu.ort.CentroEstudios.entidades.Responsable;
import uy.edu.ort.CentroEstudios.servicios.ANEPpWebServices;
import uy.edu.ort.CentroEstudios.servicios.AlumnoEJBLocal;
import uy.edu.ort.CentroEstudios.servicios.ArrayOfSerializableAlumno;
import uy.edu.ort.CentroEstudios.servicios.ArrayOfSerializableDocente;
import uy.edu.ort.CentroEstudios.servicios.ArrayOfSerializableGrupo;
import uy.edu.ort.CentroEstudios.servicios.DocenteEJBLocal;
import uy.edu.ort.CentroEstudios.servicios.GruposEJBLocal;
import uy.edu.ort.CentroEstudios.servicios.SerializableCentro;

/**
 *
 * @author scirillo
 */
@Stateless
public class NewSessionBean implements NewSessionLocal {

    @WebServiceRef(wsdlLocation = "META-INF/wsdl/localhost_49390/ANEPServices.asmx.wsdl")
    private ANEPpWebServices service;
    private String test = "";
    private SerializableCentro centro;
    @EJB
    private GruposEJBLocal gruposEJB;
    @EJB
    private AlumnoEJBLocal alumnoEJB;
    @EJB
    private DocenteEJBLocal docenteEJB;
            

    private SerializableCentro xmlTEst(java.lang.String licenseNumber) {
        service = new ANEPpWebServices();

        centro = new SerializableCentro();
        uy.edu.ort.CentroEstudios.servicios.ANEPpWebServicesSoap port = service.getANEPpWebServicesSoap();
        test += "Alumnos: " + service.getANEPpWebServicesSoap().xmlTEst(licenseNumber).getAlumnos().getSerializableAlumno().size();
        test += "Docentes: " + service.getANEPpWebServicesSoap().xmlTEst(licenseNumber).getDocentes().getSerializableDocente().size();
        test += "Grupos: " + service.getANEPpWebServicesSoap().xmlTEst(licenseNumber).getGrupos().getSerializableGrupo().size();
        test += "IdCentro: " + service.getANEPpWebServicesSoap().xmlTEst(licenseNumber).getIdCentro();
        
       ArrayOfSerializableAlumno alumnos1 = service.getANEPpWebServicesSoap().xmlTEst(licenseNumber).getAlumnos();
        ArrayOfSerializableDocente docentes1 = service.getANEPpWebServicesSoap().xmlTEst(licenseNumber).getDocentes();
        ArrayOfSerializableGrupo grupos = service.getANEPpWebServicesSoap().xmlTEst(licenseNumber).getGrupos();
        centro.setAlumnos(alumnos1);
        centro.setDocentes(docentes1);
        centro.setGrupos(grupos);
        for (int i = 0; i < grupos.getSerializableGrupo().size(); i++) {
            Grupo g = new Grupo();
            ArrayList<Alumno> alumnos = new ArrayList<Alumno>();
            ArrayList<Docente> docentes = new ArrayList<Docente>();
            g.setIdGrupo(grupos.getSerializableGrupo().get(i).getIdGrupo());
            for(int x = 0;x<grupos.getSerializableGrupo().get(i).getAlumnos().getSerializableAlumno().size();x++){
                Alumno a = new Alumno();
                ArrayList<Responsable> resps = new ArrayList<Responsable>();
                a.setIdAlumno(grupos.getSerializableGrupo().get(i).getAlumnos().getSerializableAlumno().get(x).getIdAlumno());
                a.setNombreAlumno(grupos.getSerializableGrupo().get(i).getAlumnos().getSerializableAlumno().get(x).getNombreAlumno());
                for(int y =0;y<grupos.getSerializableGrupo().get(i).getAlumnos().getSerializableAlumno().get(x).getResponsables().getSerializableResponsable().size();y++){
                    Responsable r = new Responsable();
                    r.setAlumno(a);
                    r.setEmail(grupos.getSerializableGrupo().get(i).getAlumnos().getSerializableAlumno().get(x).getResponsables().getSerializableResponsable().get(y).getEmailResponsable());
                    resps.add(r);
                    alumnoEJB.guardarResponsable(r);
                }
                a.setResponsables(resps);
                alumnos.add(a);
                alumnoEJB.guardarAlumno(a);
                        
            }
            for(int x = 0;x<grupos.getSerializableGrupo().get(i).getDocentes().getSerializableDocente().size();x++){
                Docente d = new Docente();
                ArrayList<Materia> materias = new ArrayList<Materia>();
                d.setNombre(grupos.getSerializableGrupo().get(i).getDocentes().getSerializableDocente().get(x).getNombreDocente());
                for(int y =0;y<grupos.getSerializableGrupo().get(i).getDocentes().getSerializableDocente().get(x).getMateriasDocentes().getSerializableMateria().size();y++){
                    Materia m = new Materia();
                    m.setIdMateria(grupos.getSerializableGrupo().get(i).getDocentes().getSerializableDocente().get(x).getMateriasDocentes().getSerializableMateria().get(x).getIdDocente());
                    m.setNombreMateria(grupos.getSerializableGrupo().get(i).getDocentes().getSerializableDocente().get(x).getMateriasDocentes().getSerializableMateria().get(x).getNombreDocente());
                    materias.add(m);
                    docenteEJB.guardarMaterias(m);
                }
                d.setMaterias(materias);
                docentes.add(d);
                docenteEJB.guardarDocente(d);
            }
            g.setAlumnos(alumnos);
            g.setDocentes(docentes);
            gruposEJB.guardarGrupo(g);
            
        }
        return port.xmlTEst(licenseNumber);
    }

    @Override
    public String getCentro() {
        xmlTEst("Liceo4");
        return test;
    }
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
}
